GDK/Win32: Fix modal window handling
authorChun-wei Fan <fanchunwei@src.gnome.org>
Tue, 6 Oct 2020 07:06:47 +0000 (15:06 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 16 Oct 2020 01:56:42 +0000 (09:56 +0800)
Make sure that we get the state of the modal window properly, and send out the
corresponding notification signals.

This will ensure that we do not try to activate windows that should have become
inactivated due to it opening modal windows and render the program unresponsive
because we are not activating the correct window that is due to receive user
input.

gdk/win32/gdksurface-win32.c

index 3e9de289bd0b0c5adc7d46b251359c37154cc808..2ef43845b8055d16aa8be7ba8c64b68ec3ff6f01 100644 (file)
@@ -4825,7 +4825,12 @@ gdk_win32_toplevel_set_property (GObject      *object,
       break;
 
     case LAST_PROP + GDK_TOPLEVEL_PROP_MODAL:
-      _gdk_push_modal_window (surface);
+      GDK_SURFACE (surface)->modal_hint = g_value_get_boolean (value);
+
+      if (GDK_SURFACE (surface)->modal_hint)
+        _gdk_push_modal_window (surface);
+
+      g_object_notify_by_pspec (G_OBJECT (surface), pspec);
       break;
 
     case LAST_PROP + GDK_TOPLEVEL_PROP_ICON_LIST:
@@ -4879,6 +4884,7 @@ gdk_win32_toplevel_get_property (GObject    *object,
       break;
 
     case LAST_PROP + GDK_TOPLEVEL_PROP_MODAL:
+      g_value_set_boolean (value, GDK_SURFACE (surface)->modal_hint);
       break;
 
     case LAST_PROP + GDK_TOPLEVEL_PROP_ICON_LIST: